<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      let flatArr = [
        { id: 1, title: '解忧杂货铺1', parent_id: 0 },
        { id: 2, title: '解忧杂货铺2', parent_id: 0 },
        { id: 3, title: '解忧杂货铺2-1', parent_id: 2 },
        { id: 4, title: '解忧杂货铺3-1', parent_id: 3 },
        { id: 5, title: '解忧杂货铺4-1', parent_id: 4 },
        { id: 6, title: '解忧杂货铺2-2', parent_id: 2 },
      ]

      // // 方法2
      // let map = flatArr.reduce((re, e) => {
      //   re[e.id] = e
      //   return re
      // }, {})
      // console.log(map)
      // let result = []
      // flatArr.forEach((e) => {
      //   if (e.parent_id === 0) {
      //     result.push(e)
      //   }
      //   if (e.parent_id in map) {
      //     let obj = map[e.parent_id]
      //     obj.children = obj.children || []
      //     obj.children.push(e)
      //   }
      // })
      console.log(result, 'resultresult')

      // // 方法一：
      // const depCode = (arr, pid) => {
      //   let result = []
      //   dCode(arr, pid, result)
      //   return result
      // }
      // const dCode = (arr, pid, result) => {
      //   arr.forEach((e) => {
      //     if (e.parent_id === pid) {
      //       let parent = { ...e, children: [] }
      //       result.push(parent)
      //       dCode(arr, e.id, parent.children)
      //     }
      //   })
      // }
      // console.log(depCode(flatArr, 0), '111')
      // let r = depCode(flatArr, [])
      // // 转换为平级数组
      // const treeArr = (arr, newArr) => {
      //   arr.forEach((e) => {
      //     let obj = { id: e.id, title: e.title, parent_id: e.parent_id }
      //     newArr.push(obj)
      //     if (e.children && e.children.length > 0) {
      //       treeArr(e.children, newArr)
      //     }
      //   })
      //   return newArr
      // }
      // console.log(treeArr(r, []), '1111111')
      // console.log(r, 'rrr')
    </script>
  </body>
</html>
